package com.example.pruebagps1;

import java.util.List;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.location.LocationProvider;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class FrmLocalizacion extends Activity {
	// @Override
	// protected void onCreate(Bundle savedInstanceState) {
	// super.onCreate(savedInstanceState);
	// setContentView(R.layout.activity_localizado);
	// }
	LocationListener locListener=null;
	LocationManager locManager =null;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_localizado);
		
		final Button btnActivar= (Button) findViewById(R.id.btnActivar);
		final Button btnDesactivar = (Button) findViewById(R.id.btnDesactivar);

		// Implementamos el evento "click" del botón
		btnActivar.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				locManager = (LocationManager)getSystemService(LOCATION_SERVICE);
				//Obtenemos una referencia al LocationManager
			    locManager =
			        (LocationManager)getSystemService(Context.LOCATION_SERVICE);
			 
			    //Obtenemos la última posición conocida
			    Location loc =
			        locManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
			 
			    //Mostramos la última posición conocida
			    mostrarPosicion(loc);
			    
				locListener = new LocationListener() {
					 
				    public void onLocationChanged(Location location) {
				        mostrarPosicion(location);
				    }
				 
				    public void onProviderDisabled(String provider){
				    	//txtLocalizado.setText("Provider OFF");
				        //lblEstado.setText("Provider OFF");
				    	mostrarPosicion(null);
				    }
				 
				    public void onProviderEnabled(String provider){
				    	//lblEstado.setText("Provider ON");
				    	mostrarPosicion(null);
				    }
				 
				    public void onStatusChanged(String provider, int status, Bundle extras){
				    	//lblEstado.setText("Provider Status: " + status);
				    	mostrarPosicion(null);
				    }
				};
				
				 locManager.requestLocationUpdates(
					        LocationManager.GPS_PROVIDER, 30000, 0, locListener);
			}
		});
		
		btnDesactivar.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				locManager.removeUpdates(locListener);
			}
		});
		
		
//		Criteria req = new Criteria();
//		req.setAccuracy(Criteria.ACCURACY_FINE);
//		req.setAltitudeRequired(true);
//		
//		//Mejor proveedor por criterio
//		String mejorProviderCrit = locManager.getBestProvider(req, false);
//		 
//		//Lista de proveedores por criterio
//		List<String> listaProvidersCrit = locManager.getProviders(req, false);
//		
//		//Lista de todos los proveedores
//		List<String> listaProviders = locManager.getAllProviders();
//		
//		
//		//Si el GPS no está habilitado
//		if (!locManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
//		     //mostrarAvisoGpsDeshabilitado();
//		}
		
		
		/**
		 * locManager = (LocationManager)getSystemService(LOCATION_SERVICE);
		 
		
		//Obtenemos una referencia al LocationManager
	    locManager =
	        (LocationManager)getSystemService(Context.LOCATION_SERVICE);
	 
	    //Obtenemos la última posición conocida
	    Location loc =
	        locManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
	 
	    //Mostramos la última posición conocida
	    mostrarPosicion(loc);
	    
		locListener = new LocationListener() {
			 
		    public void onLocationChanged(Location location) {
		        mostrarPosicion(location);
		    }
		 
		    public void onProviderDisabled(String provider){
		    	//txtLocalizado.setText("Provider OFF");
		        //lblEstado.setText("Provider OFF");
		    	mostrarPosicion(null);
		    }
		 
		    public void onProviderEnabled(String provider){
		    	//lblEstado.setText("Provider ON");
		    	mostrarPosicion(null);
		    }
		 
		    public void onStatusChanged(String provider, int status, Bundle extras){
		    	//lblEstado.setText("Provider Status: " + status);
		    	mostrarPosicion(null);
		    }
		};
		
		 locManager.requestLocationUpdates(
			        LocationManager.GPS_PROVIDER, 30000, 0, locListener);
		*/
//		LocationProvider provider = locManager.getProvider(listaProviders.get(0));
//		int precision = provider.getAccuracy();
//		boolean obtieneAltitud = provider.supportsAltitude();
//		int consumoRecursos = provider.getPowerRequirement();
		
		
		
//		// Localizar los controles
//		TextView txtLocalizado = (TextView) findViewById(R.id.txtLocalizado);
//		// Recuperamos la información pasada en el intent
//		Bundle bundle = this.getIntent().getExtras();
//		// Construimos el mensaje a mostrar
//		txtLocalizado.setText("-> " + bundle.getString("UBICACION"));
	}
	
	private void mostrarPosicion(Location loc) {
		// Localizar los controles
		TextView txtLocalizado = (TextView) findViewById(R.id.txtLocalizado);
	    if(loc != null)
	    {
	    	txtLocalizado.setText("Latitud: " + String.valueOf(loc.getLatitude())+"\n Longitud: " + String.valueOf(loc.getLongitude())+"\n Precision: " + String.valueOf(loc.getAccuracy()));
	    }
	    else
	    {
	    	txtLocalizado.setText("SIN DATOSH");
	    }
	}

}
